www.gusucode.com > 用于人脸识别和人脸定位的主动形状模型(asm)matlab工具箱 > asm toolbox\NormalizeShape.m
%%%%%%%%%%%%%%%%%%%%%%%%%% %(c) Ghassan Hamarneh 1999 %%%%%%%%%%%%%%%%%%%%%%%%%% function [xNew,yNew]=NormalizeShape(xOld,yOld); %function [xNew,yNew]=NormailzeShape(xOld,yOld); %the distance between point 1 and 2 scale it to unity (s=1/d) dx=xOld(2)-xOld(1); dy=yOld(2)-yOld(1); s=1/sqrt(dx^2+dy^2); %make the line pt1-pt2 horizpntal by rotating it negative its angle (Theta= - angle of slope) Theta=-atan(dy/dx); if (dx<0) Theta=Theta+pi; end %scale and rotate but NO translation NewX=ScaleRotateTranslate([xOld;yOld],s,Theta,0,0); % now translate to make the mean of x and y at origin (center of mass on origin) tx=-mean(NewX(1:end/2)); ty=-mean(NewX(end/2+1:end)); NewX=NewX+[tx*ones(length(NewX)/2,1);ty*ones(length(NewX)/2,1)]; xNew=NewX(1 :end/2); yNew=NewX(end/2+1:end);